/*
 * Created on 24/06/2005
 *
 */
package com.master.bd.calculo_frete;

import java.sql.*;

import com.master.ed.*;
import com.master.root.*;
import com.master.util.*;
import com.master.util.bd.*;

public class Calcula_Frete_Emergencial extends Calcula_Frete{


    public Calcula_Frete_Emergencial(ExecutaSQL executasql) {
        super(executasql);
        // // ("Calcula_Frete_Emergencial 1");
    }


    public void calcula(Calcula_FreteED ed)
    throws Excecoes{


            Localiza_Tabela = new Localiza_Tabela(this.executasql);
            Tabela_FreteBean tabelaFreteED = new Tabela_FreteBean();

            ed.setLocalizado("N");
            ed.setDM_Tem_Cidade("N");
            ed.setDM_Tem_Peso("N");
            ed.setDM_Tem_Modal("N");
            ed.setDM_Tem_Validade("N");
            ed.setDM_Tem_Vigencia("N");
            ed.setDM_Tem_Empresa("N");
            ed.setDM_Tem_Regiao_Estado("N");
            ed.setDM_Tem_Estado("N");
            ed.setDM_Tem_Subregiao("N");
            ed.setDM_Tem_Regiao_Pais("N");
            ed.setDM_Tem_Pais("S");
            ed.setDM_Tabela_Reversa("N");
            ed.setDM_Tem_Tabela_Unidade("N");
            ed.setDM_Tem_Produto("S");

            ed.setDM_Percurso_Busca("Origem_Destino");


                // // ("Localiza_Tabela Calcula_Frete_Expresso ---");

                tabelaFreteED = Localiza_Tabela.escolheTabela(ed);


                if ("S".equals(tabelaFreteED.getDM_Localizado())) {
                  // // ("achou tabela- oid >> " + tabelaFreteED.getOID());

                    this.calculaFretePeso(tabelaFreteED, ed);

                    this.calculaFreteValor(tabelaFreteED, ed);

                    this.calculaTaxaColeta (tabelaFreteED , ed);
                    if (!"I".equals (tabelaFreteED.getDM_Tipo_Localizacao_Destino ())) {
                      this.calculaTaxaEntrega (tabelaFreteED , ed);
                    }
                    else {
                      this.calculaTaxaRedespacho (tabelaFreteED , ed);
                    }
  
                    // // ("calculou tudo ");

                }
    }

    protected void calculaFretePeso( Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed) throws Excecoes {
            // --------------------FRETE PESO--------------------------------------------------

            // // ("achou tabela- getNR_Peso >> " + ed.getNR_Peso());
            // // ("achou tabela- getNR_Peso_Tabela >> " + ed.getNR_Peso_Tabela());
            // // ("achou tabela- getVL_D_Ate025C >> " + tabelaFreteED.getVL_D_Ate025C());

            Tipo_Movimento = "FP";
            VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate025C ();
            double ultimo_peso=30;

            if (ed.getNR_Peso_Tabela () > 0.25)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate050C ();
          
            if (ed.getNR_Peso_Tabela () > 0.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1C ();
          
            if (ed.getNR_Peso_Tabela () > 1)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate1D ();
          
            if (ed.getNR_Peso_Tabela () > 1.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2C ();

            if (ed.getNR_Peso_Tabela () > 2)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate2D ();
          
            if (ed.getNR_Peso_Tabela () >2.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3C ();

            if (ed.getNR_Peso_Tabela () > 3)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate3D ();
          
            if (ed.getNR_Peso_Tabela () > 3.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4C ();

            if (ed.getNR_Peso_Tabela () > 4)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate4D ();
          
            if (ed.getNR_Peso_Tabela () > 4.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5C ();

            if (ed.getNR_Peso_Tabela () > 5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate5D ();
          
            if (ed.getNR_Peso_Tabela () > 5.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6C ();

            if (ed.getNR_Peso_Tabela () > 6)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate6D ();
          
            if (ed.getNR_Peso_Tabela () > 6.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7C ();

            if (ed.getNR_Peso_Tabela () > 7)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate7D ();
          
            if (ed.getNR_Peso_Tabela () > 7.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8C ();

            if (ed.getNR_Peso_Tabela () > 8)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate8D ();
          
            if (ed.getNR_Peso_Tabela () > 8.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9C ();

            if (ed.getNR_Peso_Tabela () > 9)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate9D ();
          
            if (ed.getNR_Peso_Tabela () > 9.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10C ();
          
            if (ed.getNR_Peso_Tabela () > 10)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate10D ();

            if (ed.getNR_Peso_Tabela () > 10.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate11C ();

            if (ed.getNR_Peso_Tabela () > 11)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate11D ();
          
            if (ed.getNR_Peso_Tabela () > 11.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate12C ();

            if (ed.getNR_Peso_Tabela () > 12)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate12D ();
          
            if (ed.getNR_Peso_Tabela () > 12.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate13C ();

            if (ed.getNR_Peso_Tabela () > 13)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate13D ();
          
            if (ed.getNR_Peso_Tabela () > 13.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate14C ();

            if (ed.getNR_Peso_Tabela () > 14)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate14D ();
          
            if (ed.getNR_Peso_Tabela () > 14.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate15C ();

            if (ed.getNR_Peso_Tabela () > 15)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate15D ();
          
            if (ed.getNR_Peso_Tabela () > 15.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate16C ();

            if (ed.getNR_Peso_Tabela () > 16)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate16D ();
          
            if (ed.getNR_Peso_Tabela () > 16.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate17C ();

            if (ed.getNR_Peso_Tabela () > 17)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate17D ();
          
            if (ed.getNR_Peso_Tabela () > 17.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate18C ();
          
            if (ed.getNR_Peso_Tabela () > 18)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate18D ();

            if (ed.getNR_Peso_Tabela () > 18.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate19C ();

            if (ed.getNR_Peso_Tabela () > 19)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate19D ();
          
            if (ed.getNR_Peso_Tabela () > 19.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate20C ();

            if (ed.getNR_Peso_Tabela () > 20)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate20D ();
          
            if (ed.getNR_Peso_Tabela () > 20.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate21C ();

            if (ed.getNR_Peso_Tabela () > 21)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate21D ();
          
            if (ed.getNR_Peso_Tabela () > 21.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate22C ();

            if (ed.getNR_Peso_Tabela () > 22)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate22D ();
          
            if (ed.getNR_Peso_Tabela () > 22.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate23C ();

            if (ed.getNR_Peso_Tabela () > 23)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate23D ();
          
            if (ed.getNR_Peso_Tabela () > 23.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate24C ();

            if (ed.getNR_Peso_Tabela () > 24)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate24D ();
          
            if (ed.getNR_Peso_Tabela () > 24.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate25C ();

            if (ed.getNR_Peso_Tabela () > 25)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate25D ();
          
            if (ed.getNR_Peso_Tabela () > 25.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate26C ();

            if (ed.getNR_Peso_Tabela () > 26)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate26D ();
          
            if (ed.getNR_Peso_Tabela () > 26.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate27C ();

            if (ed.getNR_Peso_Tabela () > 27)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate27D ();
          
            if (ed.getNR_Peso_Tabela () > 27.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate28C ();

            if (ed.getNR_Peso_Tabela () > 28)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate28D ();
          
            if (ed.getNR_Peso_Tabela () > 28.5)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate29C ();

            if (ed.getNR_Peso_Tabela () > 29)
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate29D ();
          
            if (ed.getNR_Peso_Tabela () > 29.5){
              VL_Movimento_Frete = tabelaFreteED.getVL_D_Ate30C ();
              ultimo_peso=30;
            }          
            // // ("achou tabela- VL_Movimento_Frete >> " + VL_Movimento_Frete);
          
            if (ed.getNR_Peso_Tabela () > ultimo_peso) {
              VL_Movimento_Frete += (tabelaFreteED.getVL_D_ExcedenteC () * (ed.getNR_Peso_Tabela () - ultimo_peso));
            }

            // // ("achou tabela- VL_Movimento_Frete >> " + VL_Movimento_Frete);
          
            ed.setCD_Tipo_Movimento (Tipo_Movimento);
            ed.setOID_Tabela_Frete (String.valueOf (tabelaFreteED.getOID ()));
            ed.setVL_Movimento (VL_Movimento_Frete);
            this.incluiMovimento (ed);
    }


    protected void calculaFreteValor(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------AD VALOREM--------------------------------------------------
            Tipo_Movimento = "AV";
            VL_Movimento_Frete = (ed.getVL_Nota_Fiscal() * tabelaFreteED.getPE_C_Ad_Valorem() / 100);


            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);

    }

    protected void calculaTaxaColeta(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------TX COLETA--------------------------------------------------
            Tipo_Movimento = "TXC";
            VL_Movimento_Frete=tabelaFreteED.getVL_TX_Coleta();

            if (ed.getNR_Peso() >tabelaFreteED.getNR_Peso_TX_Coleta()){
              VL_Movimento_Frete += tabelaFreteED.getVL_TX_Exc_Coleta() * (ed.getNR_Peso()-tabelaFreteED.getNR_Peso_TX_Coleta());
            }
            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);
    }

    protected void calculaTaxaEntrega(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------TX ENTREGA--------------------------------------------------
            Tipo_Movimento = "TXE";
            VL_Movimento_Frete=tabelaFreteED.getVL_TX_Entrega();

            if (ed.getNR_Peso() >tabelaFreteED.getNR_Peso_TX_Entrega()){
              VL_Movimento_Frete += tabelaFreteED.getVL_TX_Exc_Entrega() * (ed.getNR_Peso()-tabelaFreteED.getNR_Peso_TX_Entrega());
            }
            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);
    }

    protected void calculaTaxaRedespacho(Tabela_FreteBean tabelaFreteED, Calcula_FreteED ed)  throws Excecoes{
        // --------------------TX Redespacho--------------------------------------------------

            Tipo_Movimento = "TXR";
            VL_Movimento_Frete=tabelaFreteED.getVL_TX_Redespacho();

            if (ed.getNR_Peso() >tabelaFreteED.getNR_Peso_TX_Redespacho()){
              VL_Movimento_Frete += tabelaFreteED.getVL_Excesso_TX_Redespacho() * (ed.getNR_Peso()-tabelaFreteED.getNR_Peso_TX_Redespacho());
            }
            ed.setCD_Tipo_Movimento(Tipo_Movimento);
            ed.setOID_Tabela_Frete(String.valueOf(tabelaFreteED.getOID()));
            ed.setVL_Movimento(VL_Movimento_Frete);
            this.incluiMovimento(ed);



    }


}
